package com.dc.common.em;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.TreeSet;

/**
 * 菜单权限枚举类
 * 
 * @author Shen
 * @date 2018年4月9日 上午10:36:16
 */
public enum EnumOperationModule {

	// DEFAULT(0,0,"权限" "超级管理员", "",""),

	No101(101, "单位管理", "新增,修改,删除,查询,查全,查单位,查部门,查私"),

	No102(102, "部门管理", "新增,修改,删除,查询,导入,导出"),

	No201(201, "员工管理", "新增,修改,删除,查询,查全,查单位,查部门,查私"),;

	int code;// 一级菜单编号code
	String module;// 一级菜单名
	String operation;// 权限功能

	/**
	 * 测试
	 * 
	 * @Title: main
	 * @param args:
	 *            void
	 * @author: ShenHJ Date: 2018年4月9日 上午10:37:16
	 */
	// public static void main(String[] args) {
	// List<SystemRolePermission> list2 = new ArrayList<SystemRolePermission>();
	// SystemRolePermission sysRole_Permission = new SystemRolePermission();
	// sysRole_Permission.setFirst_code("1");
	// sysRole_Permission.setSecond_code("101");
	// SystemRolePermission sysRole_Permission1 = new SystemRolePermission();
	// sysRole_Permission1.setFirst_code("1");
	// sysRole_Permission1.setSecond_code("102");
	// SystemRolePermission sysRole_Permission2 = new SystemRolePermission();
	// sysRole_Permission2.setFirst_code("2");
	// sysRole_Permission2.setSecond_code("201");
	// list2.add(sysRole_Permission);
	// list2.add(sysRole_Permission1);
	// list2.add(sysRole_Permission2);
	// System.out.println(EnumOperationModule.getAllMenu(list2));
	// }

	private EnumOperationModule(int code, String module, String operation) {
		this.code = code;
		this.module = module;
		this.operation = operation;
	}

	/**
	 * 根据菜单编号获取菜单模块名，如：根据101获取到单位管理
	 * 
	 * @Title: getModuleByCode
	 * @param code
	 * @return: String
	 * @author: ShenHJ Date: 2018年4月9日 上午10:37:35
	 */
	public static String getModuleByCode(int code) {
		for (EnumOperationModule em : EnumOperationModule.values()) {
			if (em.getCode() == code) {
				return em.getModule();
			}
		}
		return null;
	}

	/**
	 * 根据栏目编号获取操作（中文），如101获取到 新增,删除,修改,查看
	 * @Title: getOperationByCode 
	 * @param code
	 * @return: String
	 * @author: ShenHJ
	 * Date: 2018年5月1日 下午9:26:41
	 */
	public static String getOperationByCode(int code) {
		for (EnumOperationModule em : EnumOperationModule.values()) {
			if (em.getCode() == code) {
				return em.getOperation();
			}
		}
		return null;
	}

	/**
	 * 根据二级菜单code值以及类型（例如：新增），获取类型（例如新增）的下标
	 * 
	 * @Title: getNumByCodeType
	 * @param code
	 * @param type
	 * @return: int
	 * @author: ShenHJ Date: 2018年4月9日 上午10:46:21
	 */
	public static int getNumByCodeType(int code, String type) {// 根据101获取新增属于第0个
		for (EnumOperationModule em : EnumOperationModule.values()) {
			if (em.getCode() == code) {
				String[] funs = em.getOperation().split(",");
				for (int i = 0; i < funs.length; i++) {
					if (type.equals(funs[i])) {
						return i;
					}
				}
			}
		}
		return -1;
	}

	/**
	 * 根据权限值获取需要隐藏的按钮id
	 * 
	 * @Title: getHiddenIds
	 * @param permissionVal
	 * @return: String
	 * @author: ShenHJ Date: 2018年4月23日 下午4:33:36
	 */
//	public static String getHiddenIds(int code, String permissionVal) {
//		char[] c = permissionVal.toCharArray();
//		String str = getOperationByCode(second_code);
//		String[] strs = str.split(",");
//		StringBuffer stringBuffer = new StringBuffer();
//		for (int i = 0; i < c.length; i++) {
//			if ("0".equals(c[i] + "")) {
//				if (stringBuffer.length() == 0) {
//					stringBuffer.append(strs[i]);
//				} else {
//					stringBuffer.append("," + strs[i]);
//				}
//			}
//		}
//		return stringBuffer.toString();
//	}

	/**
	 * 根据查出的权限获取所有一级菜单以及二级菜单
	 * 
	 * @Title: getAllMenu
	 * @param permissions
	 *            保证传入的已经去重（防止一个人对应多个角色而导致菜单重复）
	 * @return: List
	 * @author: ShenHJ Date: 2018年4月9日 上午11:40:18
	 */
//	public static List getAllMenu(List<SystemRolePermission> permissions) {
//		TreeSet<String> set = new TreeSet<String>();
//		for (int i = 0; i < permissions.size(); i++) {
//			set.add(permissions.get(i).getFirst_code());
//		}
//		List list = new ArrayList<Map<String, Object>>();
//		for (String firstcode : set) {
//			Map map = new HashMap<String, Object>();
//			map.put("firstCode", firstcode);
//			map.put("firstName", getfirstModuleByCode(Integer.valueOf(firstcode)));
//			List subList = new ArrayList<Map<String, Object>>();
//			for (int j = 0; j < permissions.size(); j++) {
//				if (permissions.get(j).getFirst_code().equals(firstcode)) {
//					Map subMap = new HashMap<String, Object>();
//					subMap.put("secondCode", permissions.get(j).getSecond_code());
//					subMap.put("secondName",
//							getSecondModuleByCode(Integer.valueOf(permissions.get(j).getSecond_code())));
//					subList.add(subMap);
//				}
//			}
//			map.put("secondModule", subList);
//			list.add(map);
//		}
//		return list;
//	}

	public int getCode() {
		return code;
	}

	public void setCode(int code) {
		this.code = code;
	}

	public String getModule() {
		return module;
	}

	public void setModule(String module) {
		this.module = module;
	}

	public String getOperation() {
		return operation;
	}

	public void setOperation(String operation) {
		this.operation = operation;
	}

	

}
